package com.data.bobostructure.chapter1;

import com.data.bobostructure.utils.SortUtils;

/**  选择排序
 * Created by wangbing on 2018/3/13.
 */
// 在选择排序中加入泛型,可以排序对象和一般基本类型

public class SelectionSort03 {
    private SelectionSort03() {
    }

    //    传入数组，和数组的个数
//先选择一个最小的数和第一个数字交换
    public  static void sort(Comparable[] arr){
        int n = arr.length;
        for (int i=0;i<n;i++){

//            寻找[i,n)区间的最小值
            int minIndex = i;
            for(int j=i+1;j<n;j++){
                if(arr[j].compareTo(arr[minIndex])>0){
//                   确定小值的位置
                    minIndex=j;
                }
//                交换元素位置
                swap(arr,j,minIndex);
            }

        }

    }
    private static void swap(Object[] arr,int i,int j){
        Object t = arr[i];
        arr[i] = arr[j];
        arr[j] = t;

    }
    public static void main(String[] args) {
//        测试辅助函数
        int N = 200000;
        Integer[] arr = SortUtils.generateRandomArray(N,0,100000);
//        className必须是全路径名称；
        SortUtils.testSort("com.data.structure.chapter1.SelectionSort03","sort", arr);


    }

}

